package cn.edu.lcu.cs.javaprogramming.collection;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import java.util.ArrayList;
import java.util.LinkedList;

/**
 * 列表演示
 * 
 * @author Ling
 *
 */
class ListDemo {

	/**
	 * 用数组实现的列表，频繁插入、删除等操作效率比链表实现的列表效率低
	 * 
	 * @param count
	 */
	@ParameterizedTest
	@ValueSource(ints = { 10000 })
	void insertArrayList(int count) {
		ArrayList<Integer> ints = new ArrayList<>();
		for (int i = 0; i < count; i++) {
			ints.add(0, i); // 新元素插入到表头
		}
		ints.forEach(System.out::println);
	}

	/**
	 * 用链表实现的列表，频繁插入、删除等操作效率比数组实现的列表效率高
	 * 
	 * @param count
	 */
	@ParameterizedTest
	@ValueSource(ints = { 10000 })
	void insertLinkedList(int count) {
		LinkedList<Integer> ints = new LinkedList<>();
		for (int i = 0; i < count; i++) {
			ints.add(0, i); // 新元素插入到表头
		}
		ints.forEach(System.out::println);
	}

}
